home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Source / MacTech® Magazine / Volume 03 - 1987 / 03.10 Oct 87 / DrawPict Source / MacDrawPat.BAS < prev    next >
Encoding:
BASIC Source File  |  1987-06-20  |  4.9 KB  |  230 lines  |  [TEXT/ZBAS]

  1. REM
  2. REM  (MacDrawPat.BAS)
  3. REM
  4. REM  CREATES A 'MACDRAW(PICT)' GRAPHICS-DEMO FILE
  5. REM
  6. WINDOW OFF
  7. COORDINATE WINDOW
  8. REM
  9. REM  DEFINE 'SHORT' PICCOMMENTS
  10. REM
  11. NIL&=0
  12. noData%=0
  13. picDwgBeg%=130
  14. picDwgEnd%=131
  15. REM
  16. REM  READ-IN ALL 36 'MACDRAW' FILL/PEN PATTERNS AS HEX STRINGS
  17. REM
  18. DIM MacDrawPat$(36)
  19. FOR I%=1 TO 36
  20. READ patID%,MacDrawPat$(I%)
  21. NEXT I%
  22. REM
  23. REM  DEFINE PICTURE RECTANGLE (A FULL-SIZE 'MACDRAW' PAGE)
  24. REM
  25. picRect=0.
  26. picTop%=0
  27. picLeft%=0
  28. picBottom%=720
  29. picRight%=576
  30. REM
  31. REM  'INITIALIZE' QUICKDRAW RECTANGLE
  32. REM
  33. DIM qdRect,qdTop%,qdLeft%,qdBottom%,qdRight%
  34. REM
  35. REM  'INITIALIZE' QUICKDRAW 'FILL' PATTERN
  36. REM
  37. DIM fillPat,row12%,row34%,row56%,row78%
  38. fillPatPtr&=VARPTR(fillPat)
  39. REM
  40. REM  'INITIALIZE' PICTURE
  41. REM
  42. CALL SETRECT(picRect,picLeft%,picTop%,picRight%,picBottom%)
  43. REM
  44. REM  * * * CREATE A GRAPHICS-DEMO FILE * * *
  45. REM
  46. PicHand&=FN OPENPICTURE(picRect)
  47. REM
  48. REM  'BEGIN' A 'MACDRAW' PICTURE
  49. REM
  50. CALL PICCOMMENT(picDwgBeg%,noData%,NIL&)
  51. REM
  52. REM  TURN ON THE 'PEN' SO WE CAN SEE WHAT'S HAPPENING
  53. REM
  54. CALL SHOWPEN
  55. REM
  56. REM  DRAW A 'SINGLE-WEIGHT' LINE
  57. REM
  58. CALL MOVETO(25,25)
  59. CALL LINETO(325,125)
  60. REM
  61. REM  CREATE A 'FILLRECT' - NOTE: FILL & FRAME ARE 'GROUPED'
  62. REM
  63. qdTop%=25
  64. qdLeft%=50
  65. qdBottom%=125
  66. qdRight%=100
  67. CALL SETRECT(qdRect,qdLeft%,qdTop%,qdRight%,qdBottom%)
  68. CALL STUFFHEX(fillPatPtr&,MacDrawPat$(11))
  69. CALL FILLRECT(qdRect,fillPat)
  70. CALL FRAMERECT(qdRect)
  71. REM
  72. REM  CREATE A 'FILLOVAL' - NOTE: FILL & FRAME ARE 'GROUPED'
  73. REM
  74. qdTop%=25
  75. qdLeft%=250
  76. qdBottom%=125
  77. qdRight%=300
  78. CALL SETRECT(qdRect,qdLeft%,qdTop%,qdRight%,qdBottom%)
  79. CALL STUFFHEX(fillPatPtr&,MacDrawPat$(34))
  80. CALL FILLOVAL(qdRect,fillPat)
  81. CALL FRAMEOVAL(qdRect)
  82. REM
  83. REM  DRAW A 'DOUBLE-WEIGHT' LINE
  84. REM
  85. PEN 2,2,,,
  86. CALL MOVETO(25,125)
  87. CALL LINETO(325,25)
  88. CALL PENNORMAL
  89. REM
  90. REM  CREATE A 'FILLROUNDRECT' - NOTE: FILL & FRAME ARE 'GROUPED'
  91. REM
  92. qdTop%=25
  93. qdLeft%=150
  94. qdBottom%=125
  95. qdRight%=200
  96. CALL SETRECT(qdRect,qdLeft%,qdTop%,qdRight%,qdBottom%)
  97. ovalWidth%=10
  98. ovalHeight%=10
  99. CALL STUFFHEX(fillPatPtr&,MacDrawPat$(30))
  100. CALL FILLROUNDRECT(qdRect,ovalWidth%,ovalHeight%,fillPat)
  101. CALL FRAMEROUNDRECT(qdRect,ovalWidth%,ovalHeight%)
  102. REM
  103. REM  DRAW A 'SINGLE-WEIGHT' LINE
  104. REM
  105. CALL MOVETO(25,150)
  106. CALL LINETO(325,250)
  107. REM
  108. REM  CREATE A 'PAINTRECT' - NOTE: PAINT & FRAME ARE NOT! 'GROUPED'
  109. REM
  110. qdTop%=150
  111. qdLeft%=50
  112. qdBottom%=250
  113. qdRight%=100
  114. CALL SETRECT(qdRect,qdLeft%,qdTop%,qdRight%,qdBottom%)
  115. PEN ,,,,11
  116. CALL PAINTRECT(qdRect)
  117. CALL PENNORMAL
  118. CALL FRAMERECT(qdRect)
  119. REM
  120. REM  CREATE A 'PAINTOVAL' - NOTE: PAINT & FRAME ARE NOT! 'GROUPED'
  121. REM
  122. qdTop%=150
  123. qdLeft%=250
  124. qdBottom%=250
  125. qdRight%=300
  126. CALL SETRECT(qdRect,qdLeft%,qdTop%,qdRight%,qdBottom%)
  127. PEN 2,2,,,37
  128. CALL PAINTOVAL(qdRect)
  129. CALL PENNORMAL
  130. CALL FRAMEOVAL(qdRect)
  131. REM
  132. REM  DRAW A 'DOUBLE-WEIGHT' LINE
  133. REM
  134. PEN 2,2,,,
  135. CALL MOVETO(25,250)
  136. CALL LINETO(325,150)
  137. CALL PENNORMAL
  138. REM
  139. REM  CREATE A 'PAINTROUNDRECT' - NOTE: PAINT & FRAME ARE NOT! 'GROUPED'
  140. REM
  141. qdTop%=150
  142. qdLeft%=150
  143. qdBottom%=250
  144. qdRight%=200
  145. CALL SETRECT(qdRect,qdLeft%,qdTop%,qdRight%,qdBottom%)
  146. ovalWidth%=10
  147. ovalHeight%=10
  148. PEN ,,,,32
  149. CALL PAINTROUNDRECT(qdRect,ovalWidth%,ovalHeight%)
  150. CALL PENNORMAL
  151. CALL FRAMEROUNDRECT(qdRect,ovalWidth%,ovalHeight%)
  152. REM
  153. REM  RESET THE 'PEN', DUE TO THE 'SHOWPEN' CALL
  154. REM
  155. CALL HIDEPEN
  156. REM
  157. REM  'END' A 'MACDRAW' PICTURE
  158. REM
  159. "EndPicture"
  160. CALL PICCOMMENT(picDwgEnd%,noData%,NIL&)
  161. REM
  162. REM  CREATE THE 'MACDRAW' PICT FILE
  163. REM
  164. DEF OPEN "PICTMDRW"
  165. OPEN "O",#1,"MacDraw.demo"
  166. REM
  167. REM  WRITE-OUT A 512 BYTE (256 WORDS OR INTEGERS) HEADER OF ZEROES
  168. REM
  169. A%=0
  170. FOR I%=1 TO 256
  171. WRITE #1,A%
  172. NEXT I%
  173. REM
  174. REM  CLOSE THE PICTURE & WRITE-OUT THE 'PICT' DATA
  175. REM
  176. CALL CLOSEPICTURE
  177. PicPtr&=PEEK LONG(PicHand&)
  178. PicLength%=PEEK WORD(PicPtr&+0)
  179. NumWords%=PicLength%/2
  180. doubleNumWords%=2*NumWords%
  181. IF doubleNumWords%<PicLength% THEN NumWords%=NumWords%+1
  182. FOR I%=1 TO NumWords%
  183. J%=2*(I%-1)
  184. A%=PEEK WORD(PicPtr&+J%)
  185. WRITE #1,A%
  186. NEXT I%
  187. CALL KILLPICTURE(PicHand&)
  188. REM
  189. REM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  190. REM
  191. REM  DATA FOR ALL 36 'MACDRAW' FILL/PEN PATTERNS AS HEX STRINGS
  192. REM
  193. DATA  1,"0000000000000000"
  194. DATA  2,"0000000000000000"
  195. DATA  3,"FFFFFFFFFFFFFFFF"
  196. DATA  4,"77DD77DD77DD77DD"
  197. DATA  5,"AA55AA55AA55AA55"
  198. DATA  6,"8822882288228822"
  199. DATA  7,"8800220088002200"
  200. DATA  8,"8000080080000800"
  201. DATA  9,"8000000008000000"
  202. DATA 10,"8080413E080814E3"
  203. DATA 11,"FF808080FF080808"
  204. DATA 12,"8142241881422418"
  205. DATA 13,"8040201008040201"
  206. DATA 14,"E070381C0E0783C1"
  207. DATA 15,"77BBDDEE77BBDDEE"
  208. DATA 16,"8844221188442211"
  209. DATA 17,"99CC663399CC6633"
  210. DATA 18,"2040800008040200"
  211. DATA 19,"FF00FF00FF00FF00"
  212. DATA 20,"FF000000FF000000"
  213. DATA 21,"CC00000033000000"
  214. DATA 22,"F0F0F0F00F0F0F0F"
  215. DATA 23,"FF888888FF888888"
  216. DATA 24,"AA44AA11AA44AA11"
  217. DATA 25,"0102040810204080"
  218. DATA 26,"83070E1C3870E0C1"
  219. DATA 27,"EEDDBB77EEDDBB77"
  220. DATA 28,"1122448811224488"
  221. DATA 29,"3366CC993366CC99"
  222. DATA 30,"40A00000040A0000"
  223. DATA 31,"AAAAAAAAAAAAAAAA"
  224. DATA 32,"8888888888888888"
  225. DATA 33,"0101101001011010"
  226. DATA 34,"0008142A552A1408"
  227. DATA 35,"FF80808080808080"
  228. DATA 36,"8244281028448201"
  229. END
  230.